﻿namespace JayhallchocojejalNabinojajarher.Devices;

/// <summary>
/// 设备安装程序类
/// <para></para>
/// 参阅 [System-Defined Device Setup Classes Available to Vendors - Windows drivers | Microsoft Docs](https://docs.microsoft.com/en-us/windows-hardware/drivers/install/system-defined-device-setup-classes-available-to-vendors )
/// </summary>
public static class DeviceSetupClasses
{
    // 代码从 https://github.com/tpn/winsdk-10/blob/master/Include/10.0.14393.0/shared/devguid.h 拷贝
    // 正则：
    // 读取： DEFINE_GUID\( (\S+), +(\S+)L(, [\S ]+) \);
    // 写入： public static Guid $1 => new Guid($2$3);

    // ReSharper disable InconsistentNaming
    // ReSharper disable IdentifierTypo

#pragma warning disable 1591
    /// <summary>
    /// This class includes 1394 host controllers connected on a PCI bus, but not 1394 peripherals. Drivers for this class are system-supplied.
    /// </summary>
    public static Guid GUID_DEVCLASS_1394 =>
        new Guid(0x6bdd1fc1, 0x810f, 0x11d0, 0xbe, 0xc7, 0x08, 0x00, 0x2b, 0xe2, 0x09, 0x2f);

    /// <summary>
    /// This class includes 1394 host controllers connected on a PCI bus, but not 1394 peripherals. Drivers for this class are system-supplied.
    /// </summary>
    public static Guid GUID_DEVCLASS_1394DEBUG =>
        new Guid(0x66f250d6, 0x7801, 0x4a64, 0xb1, 0x39, 0xee, 0xa8, 0x0a, 0x45, 0x0b, 0x24);

    /// <summary>
    /// The 61883 component includes the 61883.sys protocol driver that transmits various audio and video data streams over the 1394 bus. These currently include standard/high/low quality DV, MPEG2, DSS, and Audio. These data streams are defined by the IEC-61883 specifications.
    /// </summary>
    public static Guid GUID_DEVCLASS_61883 =>
        new Guid(0x7ebefbc0, 0x3200, 0x11d2, 0xb4, 0xc2, 0x00, 0xa0, 0xc9, 0x69, 0x7d, 0x07);

    /// <summary>
    /// Adapter This class is obsolete.
    /// </summary>
    public static Guid GUID_DEVCLASS_ADAPTER =>
        new Guid(0x4d36e964, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);

    /// <summary>
    /// APM This class is reserved for system use.
    /// </summary>
    public static Guid GUID_DEVCLASS_APMSUPPORT =>
        new Guid(0xd45b1c18, 0xc8fa, 0x11d1, 0x9f, 0x77, 0x00, 0x00, 0xf8, 0x05, 0xf5, 0x30);

    /// <summary>
    /// This class includes IEEE 1394 devices that support the AVC protocol device class.
    /// </summary>
    public static Guid GUID_DEVCLASS_AVC =>
        new Guid(0xc06ff265, 0xae09, 0x48f0, 0x81, 0x2c, 0x16, 0x75, 0x3d, 0x7c, 0xba, 0x83);

    /// <summary>
    /// This class includes battery devices and UPS devices.
    /// </summary>
    public static Guid GUID_DEVCLASS_BATTERY =>
        new Guid(0x72631e54, 0x78a4, 0x11d0, 0xbc, 0xf7, 0x00, 0xaa, 0x00, 0xb7, 0xb3, 0x2a);

    /// <summary>
    /// Biometric Device (Windows Server 2003 and later versions of Windows) This class includes all biometric-based personal identification devices.
    /// </summary>
    public static Guid GUID_DEVCLASS_BIOMETRIC =>
        new Guid(0x53d29ef7, 0x377c, 0x4d14, 0x86, 0x4b, 0xeb, 0x3a, 0x85, 0x76, 0x93, 0x59);

    /// <summary>
    /// Bluetooth Devices (Windows XP SP1 and later versions of Windows) This class includes all Bluetooth devices.
    /// </summary>
    public static Guid GUID_DEVCLASS_BLUETOOTH =>
        new Guid(0xe0cbf06c, 0xcd8b, 0x4647, 0xbb, 0x8a, 0x26, 0x3b, 0x43, 0xf0, 0xf9, 0x74);

    /// <summary>
    /// CD-ROM Drives This class includes CD-ROM drives, including SCSI CD-ROM drives. By default, the system's CD-ROM class installer also installs a system-supplied CD audio driver and CD-ROM changer driver as Plug and Play filters.
    /// </summary>
    public static Guid GUID_DEVCLASS_CDROM =>
        new Guid(0x4d36e965, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);

    /// <summary>
    /// Computer This class is reserved for system use.
    /// </summary>
    public static Guid GUID_DEVCLASS_COMPUTER =>
        new Guid(0x4d36e966, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);

    /// <summary>
    /// Decoders This class is reserved for future use.
    /// </summary>
    public static Guid GUID_DEVCLASS_DECODER =>
        new Guid(0x6bdd1fc2, 0x810f, 0x11d0, 0xbe, 0xc7, 0x08, 0x00, 0x2b, 0xe2, 0x09, 0x2f);

    /// <summary>
    /// Disk Drives This class includes hard disk drives. See also the HDC and SCSIAdapter classes.
    /// </summary>
    public static Guid GUID_DEVCLASS_DISKDRIVE =>
        new Guid(0x4d36e967, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);

    /// <summary>
    /// 显卡 Display Adapters This class includes video adapters. Drivers for this class include display drivers and video miniport drivers.
    /// </summary>
    public static Guid GUID_DEVCLASS_DISPLAY =>
        new Guid(0x4d36e968, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);

    /// <summary>
    /// IEEE 1284.4 Devices This class includes devices that control the operation of multifunction IEEE 1284.4 peripheral devices.
    /// </summary>
    public static Guid GUID_DEVCLASS_DOT4 =>
        new Guid(0x48721b56, 0x6795, 0x11d2, 0xb1, 0xa8, 0x00, 0x80, 0xc7, 0x2e, 0x74, 0xa2);

    /// <summary>
    /// IEEE 1284.4 Print Functions This class includes Dot4 print functions. A Dot4 print function is a function on a Dot4 device and has a single child device, which is a member of the Printer device setup class.
    /// </summary>
    public static Guid GUID_DEVCLASS_DOT4PRINT =>
        new Guid(0x49ce6ac8, 0x6f86, 0x11d2, 0xb1, 0xe5, 0x00, 0x80, 0xc7, 0x2e, 0x74, 0xa2);

    public static Guid GUID_DEVCLASS_ENUM1394 =>
        new Guid(0xc459df55, 0xdb08, 0x11d1, 0xb0, 0x09, 0x00, 0xa0, 0xc9, 0x08, 0x1f, 0xf6);

    public static Guid GUID_DEVCLASS_FDC =>
        new Guid(0x4d36e969, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);

    public static Guid GUID_DEVCLASS_FLOPPYDISK =>
        new Guid(0x4d36e980, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);

    public static Guid GUID_DEVCLASS_GPS =>
        new Guid(0x6bdd1fc3, 0x810f, 0x11d0, 0xbe, 0xc7, 0x08, 0x00, 0x2b, 0xe2, 0x09, 0x2f);

    public static Guid GUID_DEVCLASS_HDC =>
        new Guid(0x4d36e96a, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);

    /// <summary>
    /// HID 设备 This class includes interactive input devices that are operated by the system-supplied HID class driver. This includes USB devices that comply with the USB HID Standard and non-USB devices that use a HID minidriver. For more information, see HIDClass Device Setup Class. (See also the Keyboard or Mouse classes later in this list.)
    /// </summary>
    public static Guid GUID_DEVCLASS_HIDCLASS =>
        new Guid(0x745a17a0, 0x74d3, 0x11d0, 0xb6, 0xfe, 0x00, 0xa0, 0xc9, 0x0f, 0x57, 0xda);

    public static Guid GUID_DEVCLASS_IMAGE =>
        new Guid(0x6bdd1fc6, 0x810f, 0x11d0, 0xbe, 0xc7, 0x08, 0x00, 0x2b, 0xe2, 0x09, 0x2f);

    public static Guid GUID_DEVCLASS_INFINIBAND =>
        new Guid(0x30ef7132, 0xd858, 0x4a0c, 0xac, 0x24, 0xb9, 0x02, 0x8a, 0x5c, 0xca, 0x3f);

    public static Guid GUID_DEVCLASS_INFRARED =>
        new Guid(0x6bdd1fc5, 0x810f, 0x11d0, 0xbe, 0xc7, 0x08, 0x00, 0x2b, 0xe2, 0x09, 0x2f);

    public static Guid GUID_DEVCLASS_KEYBOARD =>
        new Guid(0x4d36e96b, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);

    public static Guid GUID_DEVCLASS_LEGACYDRIVER =>
        new Guid(0x8ecc055d, 0x047f, 0x11d1, 0xa5, 0x37, 0x00, 0x00, 0xf8, 0x75, 0x3e, 0xd1);

    public static Guid GUID_DEVCLASS_MEDIA =>
        new Guid(0x4d36e96c, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);

    public static Guid GUID_DEVCLASS_MEDIUM_CHANGER => new Guid(0xce5939ae, 0xebde, 0x11d0, 0xb1, 0x81, 0x00, 0x00,
        0xf8, 0x75, 0x3e, 0xc4);

    public static Guid GUID_DEVCLASS_MEMORY =>
        new Guid(0x5099944a, 0xf6b9, 0x4057, 0xa0, 0x56, 0x8c, 0x55, 0x02, 0x28, 0x54, 0x4c);

    public static Guid GUID_DEVCLASS_MODEM =>
        new Guid(0x4d36e96d, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);

    /// <summary>
    /// 显示器信息 Monitor This class includes display monitors. An INF for a device of this class installs no device driver(s), but instead specifies the features of a particular monitor to be stored in the registry for use by drivers of video adapters. (Monitors are enumerated as the child devices of display adapters.)
    /// </summary>
    public static Guid GUID_DEVCLASS_MONITOR =>
        new Guid(0x4d36e96e, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);

    /// <summary>
    /// 鼠标 Mouse This class includes all mouse devices and other kinds of pointing devices, such as trackballs. That is, this class must also be specified in the (secondary) INF for an enumerated child HID mouse device.
    /// </summary>
    public static Guid GUID_DEVCLASS_MOUSE =>
        new Guid(0x4d36e96f, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);

    public static Guid GUID_DEVCLASS_MTD =>
        new Guid(0x4d36e970, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);

    public static Guid GUID_DEVCLASS_MULTIFUNCTION =>
        new Guid(0x4d36e971, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);

    public static Guid GUID_DEVCLASS_MULTIPORTSERIAL => new Guid(0x50906cb8, 0xba12, 0x11d1, 0xbf, 0x5d, 0x00, 0x00,
        0xf8, 0x05, 0xf5, 0x30);

    public static Guid GUID_DEVCLASS_NET =>
        new Guid(0x4d36e972, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);

    public static Guid GUID_DEVCLASS_NETCLIENT =>
        new Guid(0x4d36e973, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);

    public static Guid GUID_DEVCLASS_NETSERVICE =>
        new Guid(0x4d36e974, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);

    public static Guid GUID_DEVCLASS_NETTRANS =>
        new Guid(0x4d36e975, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);

    public static Guid GUID_DEVCLASS_NODRIVER =>
        new Guid(0x4d36e976, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);

    public static Guid GUID_DEVCLASS_PCMCIA =>
        new Guid(0x4d36e977, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);

    public static Guid GUID_DEVCLASS_PNPPRINTERS =>
        new Guid(0x4658ee7e, 0xf050, 0x11d1, 0xb6, 0xbd, 0x00, 0xc0, 0x4f, 0xa3, 0x72, 0xa7);

    public static Guid GUID_DEVCLASS_PORTS =>
        new Guid(0x4d36e978, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);

    public static Guid GUID_DEVCLASS_PRINTER =>
        new Guid(0x4d36e979, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);

    public static Guid GUID_DEVCLASS_PRINTERUPGRADE => new Guid(0x4d36e97a, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00,
        0x2b, 0xe1, 0x03, 0x18);

    public static Guid GUID_DEVCLASS_PROCESSOR =>
        new Guid(0x50127dc3, 0x0f36, 0x415e, 0xa6, 0xcc, 0x4c, 0xb3, 0xbe, 0x91, 0x0B, 0x65);

    public static Guid GUID_DEVCLASS_SBP2 =>
        new Guid(0xd48179be, 0xec20, 0x11d1, 0xb6, 0xb8, 0x00, 0xc0, 0x4f, 0xa3, 0x72, 0xa7);

    public static Guid GUID_DEVCLASS_SCSIADAPTER =>
        new Guid(0x4d36e97b, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);

    public static Guid GUID_DEVCLASS_SECURITYACCELERATOR => new Guid(0x268c95a1, 0xedfe, 0x11d3, 0x95, 0xc3, 0x00,
        0x10, 0xdc, 0x40, 0x50, 0xa5);

    public static Guid GUID_DEVCLASS_SENSOR =>
        new Guid(0x5175d334, 0xc371, 0x4806, 0xb3, 0xba, 0x71, 0xfd, 0x53, 0xc9, 0x25, 0x8d);

    public static Guid GUID_DEVCLASS_SIDESHOW =>
        new Guid(0x997b5d8d, 0xc442, 0x4f2e, 0xba, 0xf3, 0x9c, 0x8e, 0x67, 0x1e, 0x9e, 0x21);

    public static Guid GUID_DEVCLASS_SMARTCARDREADER => new Guid(0x50dd5230, 0xba8a, 0x11d1, 0xbf, 0x5d, 0x00, 0x00,
        0xf8, 0x05, 0xf5, 0x30);

    public static Guid GUID_DEVCLASS_SOUND =>
        new Guid(0x4d36e97c, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);

    public static Guid GUID_DEVCLASS_SYSTEM =>
        new Guid(0x4d36e97d, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);

    public static Guid GUID_DEVCLASS_TAPEDRIVE =>
        new Guid(0x6d807884, 0x7d21, 0x11cf, 0x80, 0x1c, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);

    public static Guid GUID_DEVCLASS_UNKNOWN =>
        new Guid(0x4d36e97e, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);

    public static Guid GUID_DEVCLASS_USB =>
        new Guid(0x36fc9e60, 0xc465, 0x11cf, 0x80, 0x56, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00);

    public static Guid GUID_DEVCLASS_VOLUME =>
        new Guid(0x71a27cdd, 0x812a, 0x11d0, 0xbe, 0xc7, 0x08, 0x00, 0x2b, 0xe2, 0x09, 0x2f);

    public static Guid GUID_DEVCLASS_VOLUMESNAPSHOT => new Guid(0x533c5b84, 0xec70, 0x11d2, 0x95, 0x05, 0x00, 0xc0,
        0x4f, 0x79, 0xde, 0xaf);

    public static Guid GUID_DEVCLASS_WCEUSBS =>
        new Guid(0x25dbce51, 0x6c8f, 0x4a72, 0x8a, 0x6d, 0xb5, 0x4c, 0x2b, 0x4f, 0xc8, 0x35);

    public static Guid GUID_DEVCLASS_WPD =>
        new Guid(0xeec5ad98, 0x8080, 0x425f, 0x92, 0x2a, 0xda, 0xbf, 0x3d, 0xe3, 0xf6, 0x9a);

    public static Guid GUID_DEVCLASS_EHSTORAGESILO =>
        new Guid(0x9da2b80f, 0xf89f, 0x4a49, 0xa5, 0xc2, 0x51, 0x1b, 0x08, 0x5b, 0x9e, 0x8a);

    public static Guid GUID_DEVCLASS_FIRMWARE =>
        new Guid(0xf2e7dd72, 0x6468, 0x4e36, 0xb6, 0xf1, 0x64, 0x88, 0xf4, 0x2c, 0x1b, 0x52);

    public static Guid GUID_DEVCLASS_EXTENSION =>
        new Guid(0xe2f84ce7, 0x8efa, 0x411c, 0xaa, 0x69, 0x97, 0x45, 0x4c, 0xa4, 0xcb, 0x57);

#pragma warning restore 1591
}